package br.com.dataphonebr.specification;

import java.util.List;

import android.content.Context;
import br.com.dataphonebr.R;
import br.com.dataphonebr.dao.impl.AtividadeDao;
import br.com.dataphonebr.dao.impl.GrupoDao;
import br.com.dataphonebr.entity.Atividade;
import br.com.dataphonebr.entity.Entity;
import br.com.dataphonebr.entity.Grupo;

public class GrupoAtividadeSpecification extends GenericSpecification<Grupo> {

	private AtividadeDao atividadeDao;
	
	public GrupoAtividadeSpecification(Context context) {
		super(context);
		dao = new GrupoDao(context);
		atividadeDao = new AtividadeDao(context);
	}
	
	@Override
	public String updateSpecification(Entity instance) {
		return this.persistSpecification(instance);
	}
	
	@Override
	public String persistSpecification(Entity instance) {
		Grupo grupo = (Grupo)instance;
		if (grupo.getNome() == null || grupo.getNome().isEmpty()){
			return getMandatoryStandardMessage(R.string.nameLabel);
		}
		return null;
	}
	
	@Override
	public String deleteSpecification(Entity instance) {
		List<Atividade> atividades = atividadeDao.selectAtividadesPorGrupo(instance.getCodigo());
		if (atividades != null && !atividades.isEmpty()){
			return context.getString(R.string.wrn_cannot_remove_appoint_group_integrity_appoint);
		}
		return super.deleteSpecification(instance);
	}
	

}
